Techniques for targeting endorsement requests

ABSTRACT

Techniques for suggesting to a first member an endorsement of a skill possessed by a second member are described. In an example, disclosed is a system that accesses a plurality of skills associated with members from a member database, and accesses a reputation score for each skill of each member from a skill reputation database. Moreover, a subset of skills can be selected based on the reputation scores of the first member. Furthermore, a specific skill in which to endorse the second member can be determined from the subset of skills based on the reputation score of the second member for the specific skill. A quality score for the specific skill is calculated. Subsequently, a user interface can present, on a display of a device of the first member, an endorsement suggestion for the specific skill of the second member when the quality score transgresses a predetermined threshold.

PRIORITY CLAIM

This application claims priority under 35 U.S.C. 119(e) to U.S.Provisional Patent Application Ser. No. 62/401,826, filed Sep. 29, 2016,which is incorporated herein by references in its entirety.Additionally, this application claims priority under 35 U.S.C. 119(e) toU.S. Provisional Patent Applications Ser. No. 62/402,753 and 62/402,955,filed Sep. 30, 2016, which are incorporated herein by references intheir entirety.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to data processingassociated with a skill suggestion system having an endorsementdatabase. The endorsement database can suggest an endorsement usingsocial graph data and profile data of a member. Specifically, thepresent disclosure relates to techniques for calculating a score totrigger the suggestion.

BACKGROUND

A social network system can maintain information on members, companies,organizations, employees, and employers. The social network system maymaintain profile pages of members, which can include educationinformation, employment information, and location information about aspecific member. Additionally, the social network system can storeinformation about a member's relationships (e.g., connections) withother members of the social network system. Furthermore, the socialnetwork system can store endorsements and recommendations of a member.For example, a first member of the social network system can endorse asecond member in a skill using an endorsement. The endorsement can bepresented on the profile page of the second member.

BRIEF DESCRIPTION OF THE DRAWINGS

Some embodiments are illustrated by way of example and not limitation inthe figures of the accompanying drawings.

FIG. 1 is a network diagram illustrating a network environment suitablefor a social network system, according to some example embodiments.

FIG. 2 is a block diagram illustrating various components of a socialnetwork system, according to some example embodiments.

FIG. 3 is a flowchart illustrating a method for generating andpresenting an endorsement suggestion, according to some exampleembodiments.

FIG. 4 is a flowchart illustrating a method for suggesting anendorsement of a second member in response to a first member viewing aprofile page of the second member, according to some exampleembodiments.

FIG. 5 is a user interface diagram illustrating an example of a featuredskill on a profile page using the techniques described in FIGS. 3-4,according to some example embodiments.

FIG. 6 is a user interface diagram illustrating an example of anendorsement suggestion, according to some example embodiments.

FIG. 7 is a block diagram illustrating components of a machine,according to some example embodiments, able to read instructions from amachine-readable medium and perform any one or more of the methodologiesdiscussed herein.

DETAILED DESCRIPTION

Example methods and systems are directed to techniques for a skillvalidation system having an endorsement database. More specifically, thepresent disclosure relates to methods, systems, and computer programproducts for suggesting an endorsement to a member based on a qualityscore for the endorsement. Techniques for calculating the quality scorefor the endorsement are described herein.

Examples merely demonstrate possible variations. Unless explicitlystated otherwise, components and functions are optional and may becombined or subdivided, and operations may vary in sequence or becombined or subdivided. In the following description, for purposes ofexplanation, numerous specific details are set forth to provide athorough understanding of example embodiments. It will be evident to oneskilled in the art, however, that the present subject matter may bepracticed without these specific details.

Techniques for suggesting to a first member an endorsement of a skillpossessed by a second member are described. In an example, disclosed isa system that accesses a plurality of skills associated with a firstmember and a second member from a member database, and accesses areputation score of each member for each skill from a skill reputationdatabase. Moreover, a subset of skills can be selected based on thereputation scores of the first member. Furthermore, a specific skill inwhich to endorse the second member can be determined from the subset ofskills based on the reputation score of the second member for thespecific skill. A quality score for the endorsement of the specificskill is calculated. Subsequently, a user interface can present, on adisplay of a device of the first member, an endorsement suggestion forthe specific skill of the second member when the quality scoretransgresses a predetermined threshold.

In current implementations, a first member of a social network systemcan endorse (e.g., recommend) a second member of the social networksystem in a specific skill by sending an endorsement for the specificskill. The first member can be the “endorser” who sends the endorsementfor the specific skill to the second member. The second member can bereferred to as the “recipient” of the endorsement. Additionally, theendorsement can be presented on a profile page of the recipient. Theendorsement can signify that the endorser recommends the recipient as anexpert or as being proficient in the corresponding skill. For example,an endorsement in accounting demonstrates that the endorser recognizesthe recipient's skill in accounting.

However, in current implementations, not all endorsements received bythe recipient can be equally representative of the recipient's abilityin the specific skill. For example, an endorsement received from a firstendorser who has the specific skill and knows the recipient can be moremeaningful than an endorsement received from a second endorser who doesnot possess the specific skill and does not know the recipient.

According to some embodiments, the social network system can generate anendorsement suggestion of a specific skill. For example, the endorsementsuggestion can be presented to a first member. The endorsementsuggestion can correspond to the first member endorsing a second memberin the specific skill. The endorsement suggestion can be presented on ahome page of the social network system. Alternatively, the endorsementsuggestion can be presented when the first member is viewing the profilepage of the second member.

The endorsement suggestion can be generated using a quality score. Thequality score of an endorsement can depend on an endorser value of thefirst member, a recipient value of the second member, and an overlapvalue between the first member and the second member. Additionally, thequality score can further depend on a reputation score of first memberpossessing the specific skill and a reputation score of the secondmember possessing the specific skill. In some instances, the reputationscores are stored in the skill reputation database.

The quality score can be correlated to the likelihood that the endorserknows the skill. Furthermore, the quality score can further depend on aconnection strength between the endorser and the recipient. Continuingwith the example above, when the endorser is skilled in accounting andalso works with the recipient at the same accounting firm, then thequality score for the endorsement can be higher than a quality score ofan endorsement from another endorser who does not possess the skill orknow the recipient.

The social network system can generate an endorsement suggestion whenthe quality score is higher than a predetermined threshold (e.g., 80 outof 100). A score that is at or above the predetermined threshold isgenerally considered a high quality score. Furthermore, an endorsementwith a high quality score can be classified as a high-qualityendorsement. In some instances, the high-quality endorsements can lyehighlighted in the profile page of the recipient. For example, theendorsement is presented by having the specific skill listed as afeatured skill on the profile page of the recipient when the qualityscore is above the predetermined threshold. Alternatively, when thequality score is below the predetermined threshold, the specific skillis not listed as the featured skill on the profile page of therecipient.

In some instances, a member of the social network system may want tosearch for a member having a specific skill. In current implementations,the search results for the member can be associated with the number ofendorsements received for the skill. However, ranking simply based onthe number of endorsements received can have many limitations. Forexample, a member profile page can include, without verification, anendorsement associated with a specific skill. In contrast, techniquesare described herein for finding a member with a validated skill usingthe quality score of the endorsement. By finding the member with thevalidated skill, a user can obtain accurate information about members ofthe social network system, which can result in the user saving time andresources.

According to some embodiments, an indexing process can rank membersusing the quality scores associated with the endorsements. For example,a higher ranking in the search results can be given to a member withendorsements that have been classified as high-quality endorsements. Anendorsement is qualified as a high-quality endorsement when the qualityscore is above a predetermined threshold (e.g., 80 out of 100).Additionally, the member profile page can include featured skills thatonly include high-quality endorsements. In some instances, the profilepage of a member includes a section that lists the featured skills ofthe member. For example, the featured skills can include endorsementsfrom endorsers who either have worked with the member or know themember. The high-quality endorsements listed in the featured skillssection can include educational information or employment informationabout the endorser.

According to some embodiments, the social network system includes aspecialized endorsement database having a database architecture tailoredspecifically for endorsements. As a result, the endorsement databaseallows for a faster data retrieval rate, for the endorsements to be sentfaster by an endorser, and for faster data processing related to theendorsements. For example, when a first member views a profile page of asecond member, suggested endorsements of the second member can bepresented in real-time for the first member to endorse. Furthermore, theendorsement database can include an endorsement quality metric that candeliver more insights about the endorsement received by analyzing theconnections and skills of the endorser and the recipient.

Additionally, techniques described herein allow for generating anendorsement suggestion based on a quality score associated with theendorsement. Techniques described herein allow for faster processingspeed for processing endorsement data to determine the skill, theendorser, and the recipient of the endorsement in real time.Additionally, techniques described herein allow for a faster retrievalof the endorsement data.

FIG. 1 is a network diagram illustrating a network environment 100suitable for a social network system, according to some exampleembodiments. The network environment 100 includes a server machine 110,a member database 115, a skill reputation database 118, an endorsementdatabase 120, a first device 130 for a first user 132, and a seconddevice 150 for a second user 152, all communicatively coupled to eachother via a network 190. The server machine 110, the member database115, the skill reputation database 118, and the endorsement database 120may form all or part of a network-based system 105 (e.g., a cloud-basedserver system configured to provide one or more services to the firstdevice 130 and second device 150). The server machine 110, the firstdevice 130, and the second device 150 may each be implemented in acomputer system, in whole or in part, as described below with respect toFIG. 7.

The member database 115 can store, but is not limited to storing, memberdata, company data, education data, social graph data, and memberactivity data for the social network system. In some instances, themember database 115 can include a plurality of databases (e.g., a firstdatabase to store profile data, a second database to store social data,and a third database to store member activity data). The server machine110 can access the information in the member database 115 using thenetwork 190.

The skill reputation database 118 can store a plurality of reputationscores for the members. Each reputation score in the plurality ofreputation scores can be associated with a member having a skill. Thereputation score for a skill of a member can be calculated using memberdata (e.g., job title, company name, education information, or years ofexperience) of the member. For example, the reputation score for theaccounting skill of a member who is an accountant with 15 years ofexperience can be 95 out of 100, which can indicate that the member isproficient and an expert in accounting. The server machine 110 canaccess the information in the skill reputation database 118 using thenetwork 190.

The endorsement database 120 can store a plurality of endorsements. Anendorsement 125 is an example of an endorsement in the plurality ofendorsements that is stored in the endorsement database 120. Theendorsement 125 includes an endorser 126, a recipient 127, and a skill128. For example, the endorser 126 endorses the recipient 127 in theskill 128. Both the endorser 126 and the recipient 127 can be members ofthe social network system. The server machine 110 can access theinformation in the endorsement database 120 using the network 190.

Also shown in FIG. 1 are the users 132 and 152. One or both of the users132 and 152 may be a human user (e.g., member of the social networksystem), a machine user (e.g., a computer configured by a softwareprogram to interact with the first device 130 or the second device 150),or any suitable combination thereof (e.g., a human assisted by a machineor a machine supervised by a human). The user 132 is not part of thenetwork environment 100, but is associated with the first device 130 andmay be a user of the first device 130. For example, the first device 130may be a desktop computer, a vehicle computer, a tablet computer, anavigational device, a portable media device, a smartphone, or awearable device (e.g., a smart watch or smart glasses) belonging to theuser 132. Likewise, the user 152 is not part of the network environment100, but is associated with the second device 150. As an example, thesecond device 150 may be a desktop computer, a vehicle computer, atablet computer, a navigational device, a portable media device, asmartphone, or a wearable device (e.g., a smart watch or smart glasses)belonging to the user 152.

In some instances, the user 132 can be the endorser 126 who endorses theuser 152, who is the recipient 127 of the endorsement 125. In anotherexample, the user 132 can be the member searching for a memberproficient in a specific skill, and the user 152 can be validated in thespecific skill. For example, the server machine 110 can transmit amessage to the user 152 on behalf of the user 132 using the network 190.

The network 190 may be any network that enables communication between oramong machines, databases, and devices (e.g., the server machine 110 andthe first device 130). Accordingly, the network 190 may be a wirednetwork, a wireless network (e.g., a mobile or cellular network), or anysuitable combination thereof. The network 190 may include one or moreportions that constitute a private network, a public network (e.g., theInternet), or any suitable combination thereof. Accordingly, the network190 may include one or more portions that incorporate a local areanetwork (LAN), a wide area network (WAN), the Internet, a mobiletelephone network (e.g., a cellular network), a wired telephone network(e.g., a plain old telephone system (POTS) network), a wireless datanetwork (e.g., a Wi-Fi network or WiMAX network), or any suitablecombination thereof. Any one or more portions of the network 190 maycommunicate information via a transmission medium. As used herein,“transmission medium” refers to any intangible (e.g., transitory) mediumthat is capable of communicating (e.g., transmitting) instructions forexecution by a machine (e.g., by one or more processors of such amachine), and includes digital or analog communication signals or otherintangible media to facilitate communication of such software.

Any of the machines, databases, or devices described herein may beimplemented in a general-purpose computer modified (e.g., configured orprogrammed) by software (e.g., one or more software modules) to be aspecial-purpose computer to perform one or more of the functionsdescribed herein for that machine, database, or device. For example, acomputer system able to implement any one or more of the methodologiesdescribed herein is discussed below with respect to FIG. 7. As usedherein, a “database” is a data storage resource and may store datastructured as a text file, a table, a spreadsheet, a relational database(e.g., an object-relational database), a triple store, a hierarchicaldata store, or any suitable combination thereof. Moreover, any two ormore of the machines, databases, or devices described herein may becombined into a single machine, database, or device, and the functionsdescribed herein for any single machine, database, or device may besubdivided among multiple machines, databases, or devices.

FIG. 2 is a block diagram illustrating components of a social networksystem 210 (e.g., social network), according to some exampleembodiments. The social network system 210 is an example of anetwork-based system 105 of FIG. 1. The social network system 210 caninclude a user interface 202, a quality score calculator 204, anendorser value calculator 206, a recipient value calculator 207, and anoverlap value calculator 208. Two or more of the components 202-208 maybe configured to communicate with each other (e.g., via a bus, sharedmemory, or a switch). The user interface 202 can provide information orcause an interface to be rendered on a client device of a member. Forexample, the user interface 202 can present, on a profile page of therecipient, a validation for a specific skill when the quality score ofthe endorsement is above a predetermined threshold.

Additionally, the social network system 210 can communicate with themember database 115, the skill reputation database 118, and theendorsement database 120 of FIG. 1. The member database 115 can storemember data 220. The skill reputation database 118 can score reputationdata 225 of each member in a specific skill. The endorsement database120 can store endorsement data 230.

The member data 220 can include profile data 212, which includesinformation from a profile page of a member. Moreover, the member data220 can include social graph data 214 and member activity data. As laterdescribed in FIG. 3, the endorser value calculator 206 can determine anendorser value for the endorser 126 using the member data 220 of theendorser 126. Additionally, the recipient value calculator 207 candetermine a recipient value for the recipient 127 using the member data220 of the recipient 127. Moreover, the overlap value calculator 208 candetermine an overlap value using the member data 220 of both theendorser 126 and the recipient 127. Furthermore, the quality scorecalculator 204 can determine a quality score for the endorsement usingthe endorser value, the recipient value, and the overlap value. In someinstances, some of the processing of the data for determining theendorser value, the recipient value, and overlap value can be performedby an offline data processor 240 on a periodic basis (e.g., nightly) inorder to return faster calculation results.

The profile data 212 can be used to determine the endorser value and therecipient value in a specific skill. For example, the endorser value ofthe endorser in a specific skill depends the endorser having profiledata (e.g., job title, degree, industry) that is related to the specificskill. Similarly, the recipient value of the recipient in a specificskill depends on the recipient having profile data (e.g., job title,degree, industry) that is related to the specific skill. Profile datarelated to the specific skill includes having the specific skill listedon the profile page, a recommendation of the specific skill, a degreeassociated with the specific skill, a job title associated with thespecific skill, and other educational and/or employment data associatedwith the specific skill. Additionally, the social network system 210maintains associations among various skills, and skills associated withthe specific skill may be determined to be the same or related.

For instance, with many social network systems, when a user registers tobecome a member, the member is prompted to provide a variety of personaland employment information that may be displayed in the member's profilepage. As used herein, personal and/or employment information is referredto as profile data 212. The profile data 212 can be used to determinethe endorser value and the recipient value in a specific skill. Theprofile data 212 that is commonly requested and displayed as part of amember's profile page includes the member's age, birthdate, gender,interests, contact information, home location (e.g., city and state),educational background (e.g., schools, majors, matriculation dates,graduation dates, etc.), employment history, office location, skills,professional organizations, and other such personal and/or employmentinformation. In some embodiments, the profile data 212 may include thevarious skills that each member has indicated he or she possesses.Additionally, the profile data 212 may include skills of a member thathave been endorsed by another member. Furthermore, the profile data 212may include recommendations of a member from another member (e.g.,co-worker).

With certain social network systems, such as professional social networksystems, the profile data 212 can include information commonly includedin a professional resume or curriculum vitae, such as information abouta person's education, the company at which a person is employed, thelocation of the employer, an industry in which a person is employed, ajob title or function, an employment history, skills possessed by aperson, professional organizations of which a person is a member, and soon.

Additionally, social network systems provide their users with amechanism for defining their relationships with other people. Thisdigital representation of real-world relationships is frequentlyreferred to as a social graph, which may be stored in the social graphdata 214.

The social graph data 214 can be associated with an entity's presencewithin the social network system 210. For example, consistent with someembodiments, a social graph is implemented with a specialized graph datastructure in which various entities (e.g., people, companies, schools,government institutions, non-profits, and other organizations) arerepresented as nodes connected by edges, where the edges have differenttypes representing the various associations and/or relationships amongthe different entities. The social graph data 214 of a member caninclude first-degree connections, second-degree connections, and so on.In one embodiment, a first member is a first-degree connection to asecond member when the first and second members are directly connectedto each other in the social network system 210. Similarly, a firstmember is a second-degree connection to a second member when the firstand second members are not connected to each other, but both areconnected to a third member. As can be inferred from the foregoing, annth-degree connection is a connection where a first node and a secondnode are separated by N−1 nodes.

In sonic instances, the endorser value calculator 206 can determine anendorser value for the endorser 126 using the profile data 212 andsocial graph data 214 of the endorser 126. For example, the endorservalue calculator 206 can access the profile data 212 to obtain a numberof endorsements given or received by the endorser 126, a number ofskills listed on the profile page of the endorser 126, a consumermarketing segment, a seniority, or a number of years in a career.Additionally, the endorser value calculator 206 can access the socialgraph data 214 to determine a number of connections of the endorser 126,and a number of endorsements per connection. For example, the endorservalue is determined using Equation 1.

Endorser Value

=C ₀(Number of Endorsements Given by Endorser)

+C ₁(Number of Endorsements Received)

+C ₂(Number of Skills)+C ₃(Years in Career)

+C ₄(Number of Connections)

+C ₅(Number of Endorsements Per Connection),

where C ₀ . . . C ₅ are coefficients with a range from 0 to1.  (Equation 1)

In some instances, the recipient value calculator 207 can determine arecipient value for the recipient 127 using the profile data 212 andsocial graph data 214 of the recipient 127. For example, the recipientvalue calculator 207 can access the profile data 212 to obtain a numberof endorsements given or received by the recipient 127, a number ofskills listed on the profile page of the recipient 127, a consumermarketing segment, a seniority, or a number of years in a career.Additionally, the recipient value calculator 207 can access the socialgraph data 214 to determine a number of connections. For example, therecipient value is determined using Equation 2.

Recipient Value

=C ₆(Number of Endorsements Given by Recipient)

+C ₇(Number of Endorsements Received)

+C ₈(Number of Skills)+C ₃(Years in Career)

+C ₉(Number of Connections),

where C ₆ . . . C ₉ are coefficients with a range from 0 to1.  (Equation 2)

In some instances, the overlap value calculator 208 can determine anoverlap value between the endorser 126 and the recipient 127 using thesocial graph data 214 (e.g., first-degree connections) of the endorser126 and the recipient 127. For example, the overlap value calculator 208can access the social graph data 214 to determine a connection densitybetween the endorser 126 and the recipient 127, as later described inFIG. 3. The overlap value for the endorser 126 and the recipient 121 canbe determined based on the connection density value. For example, theoverlap value is determined using Equation 3. The values for the commonemployer, common industry, common job title, common school, commondegree, and common location can be binary numbers, where 1 indicatesthat the first and second members have a profile attribute (e.g.,employer, industry, job title, school, degree) in common.

Overlap Value

=C ₁₀(Common Employer)+C ₁₁(Common Industry)

+C ₁₂(Common Job Title)+C ₁₃(Common School)

+C ₁₄(Common Degree)+C ₁₅(Common Location),

where C ₁₀ . . . C ₁₅ are coefficients with a range from 0 to1.  (Equation 3)

The social network system 210 may provide a broad range of otherapplications and services that allow members the opportunity to shareand receive information, often customized to the interests of themembers. In some embodiments, members may be able to self-organize intogroups, or interest groups, organized around subject matter or a topicof interest. In some embodiments, the social network system 210 may hostvarious job listings providing details of job openings with variousorganizations.

In some instances, the member data 220 may include member activity data.The member activity data include members' interactions with the variousapplications, services, and content made available via the socialnetwork system 210, and a member's behavior (e.g., content viewed, linksselected, etc.) may be used to determine the member's proficiency in aspecific skill. For example, the endorser 126 viewing content associatedwith accounting may increase the endorser value for the accountingendorsement.

The reputation data 225 includes reputation scores of members in aspecific skill. For example, a member can have a first reputation scorefor a first skill and a second reputation score for a second skill. Thefirst reputation score and the second reputation score are examples of areputation score 228. The reputation score 228 can be obtained from theskill reputation database 118 in FIG. 1. As previously mentioned, theskill reputation database 118 can be maintained by the server machine110. For example, the reputation score 228 for a first skill isdetermined using Equation 4:

Reputation Score

=C ₁₆(Member has skill on profile)

+C ₁₇(Member has been endorsed for skill)

+C ₁₈(Member has been recommended for skill)

+C ₁₉(Member has related skill on profile),

where C ₁₆ . . . C ₁₉ are coefficients with a range from 0 to1.  (Equation 4)

The endorsement data 230 includes the various skills for which eachmember has been endorsed. For example, as described with respect to FIG.1, using the endorsement 125, the endorser 126 can endorse the recipient127 in the skill 128. Additionally, the endorsement data 230 can includethe various skills that each member has indicated he or she possesses.In some instances, an expert determination process can rank subjectmatter experts in a specific skill using a quality score 235 associatedwith the endorsement 125. As later described in FIG. 3, the qualityscore calculator 204 can calculate the quality score 235 for theendorsement 125 using the endorser value, the recipient value, and theoverlap value.

Furthermore, the social network system 210 can be configured to processdata offline or periodically using an offline data processor 240. Insome instances, some or all of the calculations performed by the qualityscore calculator 204, endorser value calculator 206, recipient valuecalculator 207, and overlap value calculator 208 can be performed by theoffline data processor 240. For example, the offline data processor 240can include one or more large-scale processing servers, such as Apache™Hadoop® servers that access the member data 220, reputation data 225,and endorsement data 230 periodically (e.g., on a nightly basis) inorder to calculate the quality score, the endorser value, the recipientvalue, and the connection density.

Processing the member data 220, such as calculating the quality scorefor an endorsement, may be computationally intensive. Therefore, some ofthe calculating and selecting can be done offline, such as thecalculating of one or more parameters associated with the quality score.For example, the member data 220 may be processed offline by theendorser value calculator 206 to determine the endorser value of theendorser 126. Additionally, the member data 220 may be processed offlineby the recipient value calculator 207 to determine the recipient valueof the recipient 127 for a specific skill. By having the one or moreparameters calculated offline, less real-time processing time may beneeded by the quality score calculator 204, endorser value calculator206, recipient value calculator 207, and overlap value calculator 208 inorder to calculate the quality score for each endorsement. As a result,these parameters can be inputted in the quality score calculator 204,endorser value calculator 206, recipient value calculator 207, andoverlap value calculator 208 in real time in order to almostinstantaneously present the validation of the endorsement on the profilepage of the recipient.

As will be further described with respect to FIGS. 3-4, the qualityscore calculator 204, in conjunction with the endorser value calculator206, the recipient value calculator 207, and the overlap valuecalculator 208, can calculate the quality score 235 for the endorsement125. Additionally, the user interface 202 can present a validation of askill using the quality score 235.

FIG. 3 is a flowchart illustrating operations of the social networksystem 210 in performing a method 300 for generating and presenting anendorsement suggestion, according to some example embodiments.Operations in the method 300 may be performed by the social networksystem 210, using the quality score calculator 204, the endorser valuecalculator 206, the recipient value calculator 207, and the overlapvalue calculator 208 described above with respect to FIG. 2.

As previously mentioned, the social network system 210 can include themember database 115 storing profile data 212 of members in the socialnetwork. Additionally, the member database 115 can include social graphdata 214. The profile data 212 includes employment information (e.g.,job title, industry, years of experience) of the members and educationalinformation (e.g., degree, major, school name, graduation year) of themembers. Furthermore, the member database 115 includes member data of aplurality of members in the social network, the member data including aplurality of skills associated with a member in the plurality of members

Additionally, the social network system 210 can access the skillreputation database 118 storing a plurality of reputation scores for themembers. Each reputation score 228 in the plurality of reputation scorescan be associated with a member having a skill. The reputation score 228can be determined by the social network system 210 using the offlinedata processor 240 using the member data 220 of the member.

At operation 310, the social network system 210 can access, from themember database 115, a plurality of skills associated with a firstmember in the plurality of members and a plurality of skills associatedwith a second member in the plurality of members. The first member canbe the endorser 126, and the second member can be the recipient 127 ofthe endorsement 125. The endorser 126 and the recipient 127 can bemembers of the social network system 210. The server machine 110 canaccess the member database 115 using the network 190.

At operation 320, the social network system 210 can access, from theskill reputation database 118, a reputation score for each skill in theplurality of skills associated with the first member and a reputationscore for each skill in the plurality of skills associated with thesecond member. The server machine 110 can access the skill reputationdatabase 118 using the network 190. The skill reputation database 118stores the reputation data 225, such as a reputation score 228 of amember for a specific skill.

Equation 4 describes an algorithm for determining the reputation score228, according to some embodiments. As previously mentioned, thereputation score 228 is an indication of the skill level associated withthe member in the specific skill. A processor in the server machine 110can calculate the reputation score 228 in real time. In some instances,part of the calculation of the reputation score 228 can be performedoffline using the offline data processor 240.

In some instances, the reputation score associated with the first memberhaving the specific skill can depend on the first member having thespecific skill listed on a profile page of the first member. Forexample, the reputation score 228 increases when the specific skill islisted on the profile page of the first member. Moreover, the reputationscore 228 associated with the first member having the specific skill canbe associated with the first member having a job title that is relatedto the specific skill. Furthermore, the reputation score associated withthe first member having the specific skill can be associated with thefirst member having an educational degree that is related to thespecific skill.

At operation 330, the social network system 210 can select a subset ofskills from the plurality of skills associated with the first memberbased on the reputation score for each skill in the subset of skillsbeing above a first threshold value. In some instances, the first member(e.g., member logged into the social network system 210) can be anexpert in a first skill when the reputation score for the first skill isabove the first threshold value. The first skill can be part of thesubset of skills selected from the plurality of skills associated withthe first member. For example, by selecting a subset of skills that thefirst member (e.g., endorser) is proficient in or an expert in, theendorsement given by the first member can be more worthwhile. Aprocessor in the server machine 110 can select the subset of skills fromthe plurality of skills.

At operation 340, the social network system 210 can determine a specificskill associated with the second member based on the reputation score ofthe second member for the specific skill. Additionally, the specificskill is a skill from the subset of skills selected at operation 330.For example, the specific skill can be the skill from the subset ofskills selected at operation 330 that has the highest reputation scoreassociated with the second member. Additionally, the specific skill canbe determined based on the reputation score being higher than apredetermined threshold. In some instances, the specific skill canalready be a featured skill on the profile page of the second member.Using a skill that has a reputation score that is higher than apredetermined threshold, the social network system 210 can select askill that the second member is proficient in, for the endorsementsuggestion. A processor in the server machine 110 can determine thespecific skill associated with the second member.

At operation 350, the social network system 210 can calculate a qualityscore for an endorsement for the specific skill based on the profiledata of the first member and the second member. For example, the qualityscore calculator 204 calculates a quality score 235 for an endorsementusing the endorser value, the recipient value, the overlap value, or thereputation score. As described herein, the endorser value, the recipientvalue, the overlap value, and the reputation score can be derived fromthe profile data the first member and the second member.

In some instances, the quality score 235 can be calculated by adding theendorser value and the overlap value. Alternatively, the quality score235 can be calculated by averaging the endorser value and the overlapvalue. Additionally, the calculated quality score 235 can be stored inthe endorsement data 230 as the quality score 235 that is associatedwith the endorsement 125. For example, the quality score 235 can rangefrom 0-100. A higher score can be associated with a member who is moreproficient in the skill than another member having a lower score. Aprocessor in the server machine 110 can calculate the quality score 235in real time. In some instances, part of the calculation of the qualityscore 235 can be performed offline using the offline data processor 240.

For example, the quality score 235 can be calculated using Equation 5:

Quality Score

=C ₂₀(Endorser Value)+C ₂₁(Recipient Value)

+C ₂₂(Overlap Value)+C ₂₃(Reputation Value),

where C ₂₀ . . . C ₂₃ are coefficients with a range from 0 to1.  (Equation 5)

According to some embodiments, Equations 1-4 are inputs for Equation 5.Therefore, in some instances, the Quality Score can be the summation ofall the variables in Equations 1-4, such as:

Quality Score=C₀*Number of Endorsements Given by Endorser+ . . .+C₆*Number of Endorsements Given by Endorser+C₁₀*Common Employer+ . . .+C₁₆*Member has Skill on Profile+ . . . +C₁₉*Member has Related Skill onProfile

In some instances, a statistical model, such as logistic regression, canbe used to determine the coefficients of Equation 5. As previouslymentioned, the endorsement database 120 can store a plurality ofendorsements 125 using historical data. Each endorsement 125 includes anendorser 126, a recipient 127, and a skill 128. Additionally, eachendorsement (e.g., impression) is classified as high-quality endorsementwhen the quality score is above a predetermined. This classification canbe a ‘1’ if the endorsement is high-quality or the classification can bea ‘0’ if the endorsement is not high-quality. Additionally, for eachendorsement (e.g., impression) the social network system can know thevariables associated with each coefficient (e.g., number of endorsementsby endorser, endorsee, if the member has the skill, and so on), whichare the variables on in the right side of Equation 1-4.

According to some embodiments, the probability of a high-qualityendorsement for a given impression can be calculated by determining theprobability that the high-quality classification is ‘1’, which can be asigmoid function of the Quality Score as described in Equation 6 below:

$\begin{matrix}{\frac{1}{1 + e^{{- {Quality}}\mspace{14mu} {Score}}}.} & \left( {{Equation}\mspace{14mu} 6} \right)\end{matrix}$

Equation 6 can be further broken down to Equation 7 as described below:

$\begin{matrix}\frac{1}{1 + e^{- {(\begin{matrix}{{C_{0}*{Number}\mspace{14mu} {of}\mspace{14mu} {Endorsements}\mspace{14mu} {Given}\mspace{14mu} {by}\mspace{14mu} {Endorser}} + \ldots +} \\{C_{19}*{Member}\mspace{14mu} {has}\mspace{14mu} {Related}\mspace{14mu} {Skill}\mspace{14mu} {on}\mspace{14mu} {Profile}}\end{matrix})}}} & \left( {{Equation}\mspace{14mu} 7} \right)\end{matrix}$

In some instances, the coefficients in Equation 1-5 and 7 can bedetermined using a logistic regression model. For example, the logisticregression model can find the coefficients C₀-C₁₉ that maximizes thelikelihood that the classification of the endorsement being ahigh-quality endorsement under the logistic regression model. As knownin the art, there several efficient optimization algorithms for doingthis task. In some other instances, the coefficients in Equation 1-5 and7 can be determined using other models such as a linear regressionmodel, a decision tree model, a support vector machine model, and aNaive Bayesian model, or other machine learning algorithms.

At operation 360, the user interface 202 can present, on a display of adevice of the first member, an endorsement suggestion for the specificskill associated with the second member when the quality score exceeds apredetermined threshold. In some instances, the predetermined threshold(e.g., 50) can be preset by an administer of the social network system210. Additionally, the predetermined threshold can be adjusted in directcorrelation with the number of validated skills associated with amember. For example, the predetermined threshold is decreased when theprofile page of the member does not have any skills having a validation.Additionally, as later described in FIG. 6, the user interface in FIG. 6illustrates the presentation of an endorsement suggestion to a firstmember for endorsing a second member in a skill.

In some instances, the endorsement suggestion is presented on a homepage of the social network system 210. For example, the social networksystem 210 can access the member data of the first member and afirst-degree connection of the first member. Additionally, the socialnetwork system 210 can calculate an overlap value between the firstmember and the first-degree connection of the first member based on theaccessed member data. Subsequently, the social network system 210 canselect the first-degree connection as the second member based on thecalculated overlap value being above a second threshold value.

In another example in which the endorsement suggestion is presented on ahome page of the social network system 210, the social network system210 can access the member data of a first-degree connection of the firstmember. Additionally, the social network system 210 can calculate arecipient value for the first-degree connection of the first memberbased on the accessed member data. Subsequently, the social networksystem 210 can select the first-degree connection as the second memberbased on the calculated overlap value being above a third thresholdvalue.

Alternatively, the social network system 210 may receive, from thedevice of the first member, a request to view a profile page of thesecond member. Subsequently, the endorsement suggestion is presented onthe profile page of the second member. The suggested endorsement canfurther include a common profile attribute between the first member andthe second member. For example, the common profile attribute is a schoolthat both the first member and the second member attended. In anotherexample, the common profile attribute is a company that employed boththe first member and the second member.

In some instances, the method 300 further includes the social networksystem 210 determining an endorser value for the first member based onthe member data of the first member. Additionally, the quality score isupdated based on the endorser value. For example, the social networksystem 210 can determine, from the member data, a number of endorsementsreceived by the first member and a number of endorsements sent by thefirst member, and the endorser value is determined based on the numberof endorsements received by the first member and the number ofendorsements sent by the first member.

In some instances, the profile data includes a number of years ofexperience, and the endorser value is further based the number of yearsof experience of the first member.

Equation 1 describes an algorithm for determining the endorser value,according to some embodiments. The endorser value calculator 206 canaccess the reputation data 225 of the endorser 126 from the skillreputation database 118.

In some instances, the endorser value calculator 206 can access thereputation score 228 of the endorser 126 in the specific skill (e.g.,accounting) in order to determine the endorser value. The endorser valuecan be directly correlated to the reputation score 228. In one example,the endorser value can be equal to the reputation score 228. Forexample, if the reputation score 228 of the endorser 126 in the specificskill (e.g., accounting) is a first number (e.g., 80), then the endorservalue can also be the first number. In another example, the endorservalue increases by a predetermined amount or ratio on a directcorrelation basis with the reputation score 228.

In some instances, the endorser value calculator 206 can access profiledata 212 of the endorser 216. The profile data 212 can include a numberof years of experience, and the endorser value can be associated withthe number of years of experience of the endorser 216. For example, theendorser value can be directly proportional to the number of years ofexperience. The endorser value can increase by a predetermined ratio ona direct correlation basis with the number of years of experience.

For example, the endorser value can be determined based on the number ofendorsements received by the endorser, the number of endorsements givenby the endorser, the number of skills listed in the profile of theendorser, a consumer marketing segment associated with the endorser, aseniority of the endorser, first-degree connections of the endorser, anumber of years in the endorser's career, a number of endorsementsreceived or given per connection, and other member data 220 of theendorser.

In some instances, the method 300 further includes the social networksystem 210 determining a recipient value for the second member based onthe member data of the second member. The quality score can be updatedbased on the recipient value. For example, the social network system 210can determine, from the member data, a number of endorsements receivedby the second member and a number of endorsements sent by the secondmember. Furthermore, the recipient value may be determined based on thenumber of endorsements received by the second member and the number ofendorsements sent by the second member.

Equation 2 describes an algorithm for determining the recipient value,according to some embodiments. For example, the recipient value can bethe number of endorsements given (i.e., the first member is theendorser) and received (i.e., the second member is the receiver). Inanother example, the recipient value may be only the number ofendorsements received or the number of endorsements given. Subsequently,the quality score calculator 204 can update the quality score 235 basedon the recipient value.

The recipient value can be determined based on the number ofendorsements received by the recipient, the number of endorsements givenby the recipient, the number of skills listed in the profile of therecipient, a consumer marketing segment associated with the recipient, aseniority of the recipient, first-degree connections of the recipient, anumber of years in the recipient's career, and other member data 220 ofthe recipient.

Similarly, to the calculation of the recipient value described above,the endorser value calculator 206 can access, from the endorsementdatabase 120, endorsements that have the first member as either thereceiver or the endorser. Additionally, the endorser value calculator206 can update the endorser value based on a number of endorsementsreceived by the first member and a number of endorsements sent by thefirst member. The endorser value can be updated based on the number ofendorsements given or received by the first member. For example, theendorser value may increase when the first member has received more thana predetermined number (e.g., 20) of endorsements. Subsequently, thequality score calculator 204 can update the quality score 235 based onthe updated endorser value.

In another example, the endorser value calculator 206 can access, fromthe endorsement database 120, endorsements that have the second memberas the receiver. Additionally, the endorser value calculator 206 candetermine an endorsement value based on a number of endorsementsreceived by the second member for the specific skill. The endorser valuecalculated can be updated based on the number of endorsements receivedby the second member for the specific skill. For example, the endorservalue may increase when the second member has received more than apredetermined number (e.g., 5) of endorsements for a specific skill(e.g., accounting). Subsequently, the quality score calculator 204 canupdate the quality score 235 based on the endorsement value.

In some instances, the method 300 further includes the social networksystem 210 determining an overlap value for the first member and secondmember based on the member data of the first and second members.Additionally, the quality score is updated based on the overlap value.

The overlap value calculator 208 can determine an overlap value betweenthe first member and the second member using the member data 220. Forexample, Equation 3 describes an algorithm for determining the overlapvalue. The member data 220 can be stored in the member database 115. Themember data 220 includes profile data 212 and social graph data 214. Theprofile data 212 includes employment information and educationalinformation of the endorser 1126 and the recipient 127. Additionally,the profile data 212 can include an endorsement of a member skill, arecommendation of the member, and the member's years of experience,location, job title, position in current company, projects completedwith the company, current projects, published papers, patents, school,education information, portfolio, certifications, awards, and so on. Thesocial graph data 214 includes the first-degree connections and thesecond-degree connections of the member. A processor in the servermachine 110 can calculate the overlap value in real time. In someinstances, part of the calculation of the overlap value can be performedoffline using the offline data processor 240.

In some instances, the overlap value is determined using the similaritybetween the employment information and the educational information ofthe first member and that of the second member. For example, the overlapvalue increases when the first member and the second member studied atthe same school or worked at the same company. Alternatively, theoverlap value decreases when the first member and the second memberstudied at different schools or worked at different companies.Additionally, the overlap value can depend on similarities of otherprofile data 212 (e.g., location, job title, industry, certifications)of the first member and the second member.

In some instances, the method 300 further includes the social networksystem 210 calculating a connection density value between the firstmember and the second member, and updating the overlap value based onthe connection density value. For example, the overlap value can becalculated using the connection density value (e.g., connectionstrength) between the first member and the second member. The overlapvalue calculator 208 calculates the connection density value between thefirst member and the second member, and updates the overlap value usingthe connection density value. For example, when the first member hasn=10 first-degree connections, there are 45 (45=Σ_(k=1) ^(n)k−1=9+8+7+6+5+4+3+2+1) unique first-degree and second-degreeconnections. Additionally, the first member and the second member have20 similar connections (e.g., same members who are either a first-degreeor a second-degree connection of both the first member and the secondmember). Therefore, the connection density value is 44%. In one example,the overlap value can equal the connection density value.

In some instances, the overlap value further depends on a firstgeographic region associated with the first member and a secondgeographic region associated with the second member. For example, theoverlap value increases when the first region is the same as the secondregion, implying that the first member and the second member live in thesame region. Alternatively, the overlap value decreases when the firstregion is not the same as the second region.

Furthermore, the overlap value can be determined based on employmentinformation, education information, location information, and theconnection density value. The employment information includes companyname, industry, job title, job function, and occupation. The educationinformation includes school, degree, and field. The location informationincludes country, locale, and region.

In some instances, the specific skill is not listed on a profile page ofthe second member. For example, the specific skill is further determinedbased on a job title of the second member. In another example, thespecific skill is further determined based on a degree attained by thesecond member.

In some instances, the specific skill is listed as a featured skill onthe profile page of the second member when the quality score is abovethe predetermined threshold. Alternatively, the specific skill is notlisted as the featured skill on the profile page of the second memberwhen the quality score is below the predetermined threshold.Additionally, the featured skill further includes employment information(e.g., name of employer, job title) of the first member. Furthermore,the featured skill further includes educational information (e.g.,degree, major, name of school) of the first member. An example of afeatured skill is illustrated in FIG. 5.

In some instances, the social network system 210 can include theendorsement database 120 storing the endorsement data 230. Theendorsement data 230 includes a plurality of endorsements, with eachendorsement 125 in the plurality of endorsements being associated withan endorser, a receiver, and a skill. The endorser is the member sendingthe endorsement associated with a specific skill, and the receiver isthe member receiving the endorsement. Additionally, each endorsement 125in the plurality of endorsements stored in the endorsement database 120can include a classification.

The method 300 can further include the quality score calculator 204classifying the endorsement as a high-quality endorsement when thequality score is above the predetermined threshold. Alternatively, thequality score calculator 204 can classify the endorsement as alow-quality endorsement when the quality score is below thepredetermined threshold. Subsequently, the classification is presentedon a profile page of the recipient by the user interface 202.

FIG. 4 is a flowchart illustrating operations of the social networksystem 210 in performing another method 400 for suggesting anendorsement to a first member in response to the first member viewing aprofile page of a second member, according to some example embodiments.Operations in the method 400 may be performed by the network-basedsystem 105, using the quality score calculator 204, the endorser valuecalculator 206, the recipient value calculator 207, and the overlapvalue calculator 208 described above with respect to FIG. 2.

At operation 410, the social network system 210 can receive, from a userdevice of the second member, a request to view the profile page of thefirst member.

At operation 420, the social network system 210 can calculate a qualityscore for an endorsement for a specific skill from the plurality ofskills associated with the first member using an endorser value, arecipient value, an overlap value, or a reputation score. For example,the quality score calculator 204 calculates the quality score 235associated with the endorsement 125 based on the endorser value, therecipient value, the overlap value, and the reputation score. Aprocessor in the server machine 110 can calculate the quality score inreal time. In some instances, part of the calculation of the qualityscore can be performed offline using the offline data processor 240.

At operation 430, the social network system 210 can generate anendorsement suggestion for the specific skill when the quality scoretransgresses (e.g., exceeds) a predetermined threshold. Thepredetermined threshold (e.g., 80 out of 100) can be similar to thepredetermined threshold at operation 360. Additionally, operation 360 inmethod 300 illustrates an example of generating an endorsementsuggestion when the quality score transgresses a predeterminedthreshold.

At operation 440, the user interface 202 can present the endorsementsuggestion on the profile page of the second member. Operation 360 inmethod 300 illustrates an example of presenting the endorsementsuggestion. Additionally, as later described in FIG. 6, the userinterface in FIG. 6 illustrates the presentation of an endorsementsuggestion to a first member for endorsing a second member in a skill.

In some instances, the method 400 further includes the social networksystem 210 accessing a reputation score of the second member for thespecific skill, and updating the quality score based on the reputationscore of the second member for the specific skill.

Additionally, the quality score calculator 204 can verify an expert in askill from a plurality of members based on the calculated quality scorefor an endorsement of the skill. The calculated quality score for theendorsement of the skill of the expert can be higher than a secondpredetermined threshold (e.g., 95), with the second predeterminedthreshold being higher than the predetermined threshold. Thepredetermined thresholds can be set by an administrator of the socialnetwork system 210 or determined dynamically based on user input andpast quality scores for the endorsement of the skill.

FIG. 5 is a user interface diagram illustrating an example of a featuredskill on a profile page using the techniques described in FIGS. 3-4,according to some example embodiments.

A user interface 500 in FIG. 5 presents a featured skill section 510 ona profile page of a member. The featured skill section 510 includes afirst featured skill 520 and a second featured skill 560. As previouslymentioned, an endorsement for a skill can be presented with a validationwhen the quality score of the endorsement is above a predeterminedthreshold. The validation of the endorsement can include the skill beinglisted as a featured skill (e.g., first featured skill 520) on theprofile page of the member.

Additionally, the first featured skill 520 can include member data 220(e.g., employment information, educational information, social graphdata) of the endorser. For example, the first featured skill 520includes employment information 530 of the endorsers. The employmentinformation can include the employer name, which can be presented byvalidating the skill as being endorsed by coworkers of the recipient.Moreover, the first featured skill 520 includes social graph data 540 ofthe viewer of the profile page, such as connections of the viewer whohave endorsed the member. The first featured skill 520 can also includea total number 550 of endorsements received for the skill.

In another example, the second featured skill 560 highlights leaders 570(e.g., influencers, senior leaders, executives) who have endorsed therecipient. Furthermore, the second featured skill 560 can highlightrelevant viewer information 580, such as whether the viewer has endorsedthe recipient in the skill.

FIG. 6 is a user interface diagram illustrating an example endorsementsuggestion using the techniques described in FIGS. 3-4, according tosome embodiments. A user interface 600 in FIG. 6 presents an endorsementsuggestion to a first member 610 for endorsing a second member 620 in askill 630. In this example, the first member 610 is Aaron, the secondmember 620 is Vera, and the skill 630 is machine learning. Additionally,the endorsement suggestion includes a common employer 640 that employedboth the first and the second members.

According to various example embodiments, one or more of themethodologies described herein facilitate an endorsement suggestion of askill for a member using the member data 220. Additionally, using thedatabase structure illustrated in FIG, 2, the data processing associatedwith the suggesting of the endorsement may be performed in real time byusing the offline data processor 240 for some calculations. For example,the social network system 210 can use the offline data processor 240 insuch a way as to allow efficient retrieval and processing of theinformation in order to present the validation in real time.

When these effects are considered in aggregate, one or more of themethodologies described herein may obviate a need for certain humanefforts or resources that otherwise would be involved in calculating thequality score and validating the endorsement. Furthermore, computingresources used by one or more machines, databases, or devices (e.g.,within the network environment 100) may similarly be reduced (e.g., bypre-determining the endorser value and the recipient value). Examples ofsuch computing resources include processor cycles, network traffic,memory usage, data storage capacity, power consumption, and coolingcapacity.

The validation process allows job seekers, recruiters, and marketanalysts to quickly find accurate information (e.g., subject matterexperts) in the social network system 210. The user interface 202provides structure to search results, which enables fast navigation anddiscovery.

In order for a user to have a great search experience, correctness andperformance are key. Conventional approaches either sacrificecorrectness or do not perform fast enough. The methodologies describedherein facilitate accurate skill determination by removing falsepositives using a validation process using data available in the socialnetwork system 210. Additionally, by using the offline data processor240 to perform some of the calculations when dealing with very largedata sets, such as the member data 220, the results can be presentedfaster than they would be using current conventional approaches.

Example Machine Architecture and Machine-Readable Medium

FIG. 7 is a block diagram illustrating components of a machine 700,according to some example embodiments, able to read instructions from amachine-readable medium (e.g., a machine-readable storage medium) andperform any one or more of the methodologies discussed herein.Specifically, FIG. 7 shows a diagrammatic representation of the machine700 in the example form of a computer system, within which instructions716 (e.g., software, a program, an application, an applet, an app, orother executable code) for causing the machine 700 to perform any one ormore of the methodologies discussed herein may be executed. For example,the instructions 716 may cause the machine 700 to execute the flowdiagrams of FIGS. 3 and 4. Additionally, or alternatively, theinstructions 716 may implement the processes performed by the qualityscore calculator 204, endorser value calculator 206, recipient valuecalculator 207, and overlap value calculator 208 of FIG. 2, and soforth. The instructions 716 transform the general, non-programmedmachine 700 into a particular machine programmed to carry out thedescribed and illustrated functions in the manner described. Inalternative embodiments, the machine 700 operates as a standalone deviceor may be coupled (e.g., networked) to other machines. In a networkeddeployment, the machine 700 may operate in the capacity of a servermachine or a client machine in a server-client network environment, oras a peer machine in a peer-to-peer (or distributed) networkenvironment. The machine 700 may comprise, but not be limited to, aserver computer, a client computer, a personal computer (PC), a tabletcomputer, a laptop computer, a netbook, a set-top box (STB), a personaldigital assistant (PDA), an entertainment media system, a cellulartelephone, a smart phone, a mobile device, a wearable device (e.g., asmart watch), a smart home device (e.g., a smart appliance), other smartdevices, a web appliance, a network router, a network switch, a networkbridge, or any machine capable of executing the instructions 716,sequentially or otherwise, that specify actions to be taken by themachine 700. Further, while only a single machine 700 is illustrated,the term “machine” shall also be taken to include a collection ofmachines 700 that individually or jointly execute the instructions 716to perform any one or more of the methodologies discussed herein.

The machine 700 may include processors 710, memory/storage 730, and I/Ocomponents 750, which may be configured to communicate with each othersuch as via a bus 702. In an example embodiment, the processors 710(e.g., a Central Processing Unit (CPU), a Reduced Instruction SetComputing (RISC) processor, a Complex Instruction Set Computing (CISC)processor, a Graphics Processing Unit (GPU), a Digital Signal Processor(DSP), an Application Specific Integrated Circuit (ASIC), aRadio-Frequency Integrated Circuit (RFIC), another processor, or anysuitable combination thereof) may include, for example, a processor 712and a processor 714 that may execute the instructions 716. The term“processor” is intended to include a multi-core processor that maycomprise two or more independent processors (sometimes referred to as“cores”) that may execute instructions contemporaneously. Although FIG.7 shows multiple processors, the machine 700 may include a singleprocessor with a single core, a single processor with multiple cores(e.g., a multi-core processor), multiple processors with a single core,multiple processors with multiples cores, or any combination thereof.For example, the operations described in the method 300 and the method400 can be performed by one or more of the processors 710.

The memory/storage 730 may include a memory 732, such as a main memory,or other memory storage, and a storage unit 736, both accessible to theprocessors 710 such as via the bus 702. The storage unit 736 and memory732 store the instructions 716 embodying any one or more of themethodologies or functions described herein. The instructions 716 mayalso reside, completely or partially, within the memory 732, within thestorage unit 736, within at least one of the processors 710 (e.g.,within the processor's cache memory), or any suitable combinationthereof, during execution thereof by the machine 700. Accordingly, thememory 732, the storage unit 736, and the memory of the processors 710are examples of machine-readable media. The memory/storage 730 can storethe member data 220, the reputation data 225, or the endorsement data230.

As used herein, “machine-readable medium” means a device able to storeinstructions and data temporarily or permanently and may include, but isnot limited to, random-access memory (RAM), read-only memory (ROM),buffer memory, flash memory, optical media, magnetic media, cachememory, other types of storage (e.g., Erasable Programmable Read-OnlyMemory (EEPROM)), and/or any suitable combination thereof. The term“machine-readable medium” should be taken to include a single medium ormultiple media (e.g., a centralized or distributed database, orassociated caches and servers) able to store the instructions 716. Theterm “machine-readable medium” shall also be taken to include anymedium, or combination of multiple media, that is capable of storinginstructions (e.g., instructions 716) for execution by a machine (e.g.,machine 700), such that the instructions, when executed by one or moreprocessors of the machine 700 (e.g., processors 710), cause the machine700 to perform any one or more of the methodologies described herein.Accordingly, a “machine-readable medium” refers to a single storageapparatus or device, as well as “cloud-based” storage systems or storagenetworks that include multiple storage apparatus or devices. The term“machine-readable medium” excludes signals per se.

The I/O components 750 may include a wide variety of components toreceive input, provide output, produce output, transmit information,exchange information, capture measurements, and so on. The specific I/Ocomponents 750 that are included in a particular machine will depend onthe type of machine. For example, portable machines such as mobilephones will likely include a touch input device or other such inputmechanisms, while a headless server machine will likely not include sucha touch input device. It will be appreciated that the I/O components 750may include many other components that are not shown in FIG. 7. The I/Ocomponents 750 are grouped according to functionality merely forsimplifying the following discussion and the grouping is in no waylimiting. In various example embodiments, the I/O components 750 mayinclude output components 752 and input components 754. The outputcomponents 752 may include visual components (e.g., a display such as aplasma display panel (PDP), a light emitting diode (LED) display, aliquid crystal display (LCD), a projector, or a cathode ray tube (CRT)),acoustic components (e.g., speakers), haptic components (e.g., avibratory motor, resistance mechanisms), other signal generators, and soforth. The input components 754 may include alphanumeric inputcomponents (e.g., a keyboard, a touch screen configured to receivealphanumeric input, a photo-optical keyboard, or other alphanumericinput components), point-based input components (e.g., a mouse, atouchpad, a trackball, a joystick, a motion sensor, or other pointinginstruments), tactile input components (e.g., a physical button, a touchscreen that provides location and/or force of touches or touch gestures,or other tactile input components), audio input components (e.g., amicrophone), and the like.

In further example embodiments, the I/O components 750 may includebiometric components 756, motion components 758, environmentalcomponents 760, or position components 762, among a wide array of othercomponents. For example, the biometric components 756 may includecomponents to detect expressions (e.g., hand expressions, facialexpressions, vocal expressions, body gestures, or eye tracking), measurebiosignals (e.g., blood pressure, heart rate, body temperature,perspiration, or brain waves), identify a person (e.g., voiceidentification, retinal identification, facial identification,fingerprint identification, or electroencephalogram-basedidentification), and the like. The motion components 758 may includeacceleration sensor components (e.g., accelerometer), gravitation sensorcomponents, rotation sensor components(e.g., gyroscope), and so forth.The environmental components 760 may include, for example, illuminationsensor components (e.g., photometer), temperature sensor components(e.g., one or more thermometers that detect ambient temperature),humidity sensor components, pressure sensor components (e.g.,barometer), acoustic sensor components (e.g., one or more microphonesthat detect background noise), proximity sensor components (e.g.,infrared sensors that detect nearby objects), gas sensors (e.g., gasdetection sensors to detect concentrations of hazardous gases for safetyor to measure pollutants in the atmosphere), or other components thatmay provide indications, measurements, or signals corresponding to asurrounding physical environment. The position components 762 mayinclude location sensor components (e.g., a Global Position System (GPS)receiver component), altitude sensor components (e.g., altimeters orbarometers that detect air pressure from which altitude may be derived),orientation sensor components (e.g., magnetometers), and the like.

Communication may be implemented using a wide variety of technologies.The I/O components 750 may include communication components 764 operableto couple the machine 700 to a network 780 or devices 770 via a coupling782 and a coupling 772, respectively. For example, the communicationcomponents 764 may include a network interface component or othersuitable device to interface with the network 780. In further examples,the communication components 764 may include wired communicationcomponents, wireless communication components, cellular communicationcomponents, Near Field Communication (NFC) components, Bluetooth®components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and othercommunication components to provide communication via other modalities.The devices 770 may be another machine or any of a wide variety ofperipheral devices (e.g., a peripheral device coupled via a UniversalSerial Bus (USB)).

Moreover, the communication components 764 may detect identifiers orinclude components operable to detect identifiers. For example, thecommunication components 764 may include Radio Frequency Identification(RFID) tag reader components, NFC smart tag detection components,optical reader components (e.g., an optical sensor to detectone-dimensional bar codes such as Universal Product Code (UPC) bar code,multi-dimensional bar codes such as Quick Response (QR) code, Azteccode, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2Dbar code, and other optical codes), or acoustic detection components(e.g., microphones to identify tagged audio signals). In addition, avariety of information may be derived via the communication components764, such as location via Internet Protocol (IP) geolocation, locationvia Wi-Fi® signal triangulation, location via detecting an NFC beaconsignal that may indicate a particular location, and so forth.

Transmission Medium

In various example embodiments, one or more portions of the network 780may be an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a LAN, a wireless LAN (WLAN), a WAN, a wireless WAN(WWAN), a metropolitan area network (MAN), the Internet, a portion ofthe Internet, a portion of the Public Switched Telephone Network (PSTN),a POTS network, a cellular telephone network, a wireless network, aWi-Fi® network, another type of network, or a combination of two or moresuch networks. For example, the network 780 or a portion of the network780 may include a wireless or cellular network and the coupling 782 maybe a Code Division Multiple Access (CDMA) connection, a Global Systemfor Mobile communications (GSM) connection, or another type of cellularor wireless coupling. In this example, the coupling 782 may implementany of a variety of types of data transfer technology, such as SingleCarrier Radio Transmission Technology (1xRTT), Evolution-Data Optimized(EVDO) technology, General Packet Radio Service (GPRS) technology,Enhanced Data rates for GSM Evolution (EDGE) technology, thirdGeneration Partnership Project (3GPP) including 3G, fourth generationwireless (4G) networks, Universal Mobile Telecommunications System(UMTS), High Speed Packet Access (HSPA), Worldwide Interoperability forMicrowave Access (WiMAX), Long Term Evolution (LTE) standard, othersdefined by various standard-setting organizations, other long-rangeprotocols, or other data transfer technology.

The instructions 716 may be transmitted or received over the network 780using a transmission medium via a network interface device (e.g., anetwork interface component included in the communication components764) and utilizing any one of a number of well-known transfer protocols(e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions716 may be transmitted or received using a transmission medium via thecoupling 772 (e.g., a peer-to-peer coupling) to the devices 770. Theterm “transmission medium” shall be taken to include any intangiblemedium that is capable of storing, encoding, or carrying theinstructions 716 for execution by the machine 700, and includes digitalor analog communications signals or other intangible media to facilitatecommunication of such software.

Language

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Although an overview of the inventive subject matter has been describedwith reference to specific example embodiments, various modificationsand changes may be made to these embodiments without departing from thebroader scope of embodiments of the present disclosure. Such embodimentsof the inventive subject matter may be referred to herein, individuallyor collectively, by the term “invention” merely for convenience andwithout intending to voluntarily limit the scope of this application toany single disclosure or inventive concept if more than one is, in fact,disclosed.

The embodiments illustrated herein are described in sufficient detail toenable those skilled in the art to practice the teachings disclosed.Other embodiments may be used and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. The Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

As used herein, the term “or” may be construed in either an inclusive orexclusive sense. Moreover, plural instances may be provided forresources, operations, or structures described herein as a singleinstance. Additionally, boundaries between various resources,operations, modules, engines, and data stores are somewhat arbitrary,and particular operations are illustrated in a context of specificillustrative configurations. Other allocations of functionality areenvisioned and may fall within a scope of various embodiments of thepresent disclosure. In general, structures and functionality presentedas separate resources in the example configurations may be implementedas a combined structure or resource. Similarly, structures andfunctionality presented as a single resource may be implemented asseparate resources. These and other variations, modifications,additions, and improvements fall within a scope of embodiments of thepresent disclosure as represented by the appended claims. Thespecification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute softwaremodules (e.g., code stored or otherwise embodied on a machine-readablemedium or in a transmission medium), hardware modules, or any suitablecombination thereof. A “hardware module” is a tangible (e.g.,non-transitory) unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware modules of a computer system (e.g., a processor or a groupof processors) may be configured by software (e.g., an application orapplication portion) as a hardware module that operates to performcertain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware module may include dedicated circuitry or logic that ispermanently configured to perform certain operations. For example, ahardware module may be a special-purpose processor, such as a fieldprogrammable gate array (FPGA) or an ASIC. A hardware module may alsoinclude programmable logic or circuitry that is temporarily configuredby software to perform certain operations. For example, a hardwaremodule may include software encompassed within a general-purposeprocessor or other programmable processor. It will be appreciated thatthe decision to implement a hardware module mechanically, in dedicatedand permanently configured circuitry, or in temporarily configuredcircuitry (e.g., configured by software) may be driven by cost and timeconsiderations.

Accordingly, the phrase “hardware module” should be understood toencompass a tangible entity, and such a tangible entity may bephysically constructed, permanently configured (e.g., hardwired), ortemporarily configured (e.g., programmed) to operate in a certain manneror to perform certain operations described herein. As used herein,“hardware-implemented module” refers to a hardware module. Consideringembodiments in which hardware modules are temporarily configured (e.g.,programmed), each of the hardware modules need not be configured orinstantiated at any one instance in time. For example, where a hardwaremodule comprises a general-purpose processor configured by software tobecome a special-purpose processor, the general-purpose processor may beconfigured as respectively different special-purpose processors (e.g.,comprising different hardware modules) at different times. Software(e.g., a software module) may accordingly configure one or moreprocessors, for example, to constitute a particular hardware module atone instance of time and to constitute a different hardware module at adifferent instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multiplehardware modules exist contemporaneously, communications may be achievedthrough signal transmission (e.g., over appropriate circuits and buses)between or among two or more of the hardware modules. In embodiments inwhich multiple hardware modules are configured or instantiated atdifferent times, communications between such hardware modules may beachieved, for example, through the storage and retrieval of informationin memory structures to which the multiple hardware modules have access.For example, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions describedherein. As used herein, “processor-implemented module” refers to ahardware module implemented using one or more processors.

Similarly, the methods described herein may be at least partiallyprocessor-implemented, a processor being an example of hardware. Forexample, at least some of the operations of a method may be performed byone or more processors or processor-implemented modules. As used herein,“processor-implemented module” refers to a hardware module in which thehardware includes one or more processors. Moreover, the one or moreprocessors may also operate to support performance of the relevantoperations in a “cloud computing” environment or as a “software as aservice” (SaaS). For example, at least some of the operations may beperformed by a group of computers (as examples of machines includingprocessors), with these operations being accessible via a network (e.g.,the Internet) and via one or more appropriate interfaces (e.g., anapplication programming interface (API)).

The performance of certain operations may be distributed among the oneor more processors, not only residing within a single machine, butdeployed across a number of machines. In some example embodiments, theone or more processors or processor-implemented modules may be locatedin a single geographic location (e.g., within a home environment, anoffice environment, or a server farm). In other example embodiments, theone or more processors or processor-implemented modules may bedistributed across a number of geographic locations.

Some portions of the subject matter discussed herein may be presented interms of algorithms or symbolic representations of operations on datastored as bits or binary digital signals within a machine memory (e.g.,a computer memory). Such algorithms or symbolic representations areexamples of techniques used by those of ordinary skill in the dataprocessing arts to convey the substance of their work to others skilledin the art. As used herein, an “algorithm” is a self-consistent sequenceof operations or similar processing leading to a desired result. In thiscontext, algorithms and operations involve physical manipulation ofphysical quantities. Typically, but not necessarily, such quantities maytake the form of electrical, magnetic, or optical signals capable ofbeing stored, accessed, transferred, combined, compared, or otherwisemanipulated by a machine. It is convenient at times, principally forreasons of common usage, to refer to such signals using words such as“data,” “content,” “bits,” “values,” “elements,” “symbols,”“characters,” “terms,” “numbers,” “numerals,” or the like. These words,however, are merely convenient labels and are to be associated withappropriate physical quantities.

Unless specifically stated otherwise, discussions herein using wordssuch as “processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like may refer to actions orprocesses of a machine (e.g., a computer) that manipulates or transformsdata represented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or any suitable combination thereof), registers, orother machine components that receive, store, transmit, or displayinformation. Furthermore, unless specifically stated otherwise, theterms “a” or “an” are herein used, as is common in patent documents, toinclude one or more than one instance. Finally, as used herein, theconjunction “or” refers to a non-exclusive “or,” unless specificallystated otherwise.

What is claimed is:
 1. A system comprising: a member database storingmember data of a plurality of members in a social network, the memberdata including a plurality of skills associated with a member in theplurality of members; a skill reputation database storing a plurality ofreputation scores for a member in the plurality of members, eachreputation score in the plurality of reputation scores being associatedwith a skill of the member; one or more processors configured to:access, from the member database, a plurality of skills associated witha first member in the plurality of members and a plurality of skillsassociated with a second member in the plurality of members; access,from the skill reputation database, a reputation score for each skill inthe plurality of skills associated with the first member and areputation score for each skill in the plurality of skills associatedwith the second member; select a subset of skills from the plurality ofskills associated with the first member based on the reputation scorefor a skill in the subset of skills being above a first threshold value;determine a specific skill associated with the second member based onthe reputation score of the second member for the specific skill, thespecific skill being a skill from the subset of skills; and calculate aquality score for the specific skill based on the member data of thefirst member and the member data of the second member; and a userinterface to present, on a display of a device of the first member, anendorsement suggestion for the specific skill associated with the secondmember when the quality score transgresses a predetermined threshold. 2.The system of claim 1, wherein the endorsement suggestion is presentedon a home page of the social network.
 3. The system of claim 2, whereinthe one or more processors are further configured to: access the memberdata of the first member and the member data of a first-degreeconnection of the first member; calculate an overlap value between thefirst member and the first-degree connection of the first member basedon the accessed member data; and select the first-degree connection asthe second member based on the calculated overlap value being above asecond threshold value.
 4. The system of claim 2, wherein the one ormore processors are further configured to: access the member data of afirst-degree connection of the first member; calculate a recipient valuefor the first-degree connection of the first member based on theaccessed member data; and select the first-degree connection as thesecond member based on the calculated overlap value being above a thirdthreshold value.
 5. The system of claim 1, wherein the one or moreprocessors are further configured to: receive, from the device of thefirst member, a request to view a profile page of the second member; andwherein the endorsement suggestion is presented on the profile page ofthe second member.
 6. The system of claim 1, wherein the reputationscore of the first member for the specific skill is based on the firstmember having an educational degree that is related to the specificskill.
 7. The system of claim 1, wherein the one or more processors arefurther configured to: determine an endorser value for the first memberbased on the member data of the first member; and update the qualityscore based on the endorser value.
 8. The system of claim 7, wherein theone or more processors are further configured to: determine, from themember data, a number of endorsements received by the first member and anumber of endorsements sent by the first member; and wherein theendorser value is determined based on the number of endorsementsreceived by the first member and the number of endorsements sent by thefirst member.
 9. The system of claim 1, wherein the profile dataincludes years of experience, and the endorser value is further basedthe years of experience of the first member.
 10. The system of claim 1,wherein the one or more processors are further configured to: determinea recipient value for the second member based on the member data of thesecond member; and update the quality score based on the recipientvalue.
 11. The system of claim 10, wherein the one or more processorsare further configured to: determine, from the member data, a number ofendorsements received by the second member and a number of endorsementssent by the second member; and wherein the recipient value is determinedbased on the number of endorsements received by the second member andthe number of endorsements sent by the second member.
 12. The system ofclaim 1, wherein the one or more processors are further configured to:determine an overlap value for the first member and second member basedon the member data of the first and second member; and update thequality score based on the overlap value.
 13. The system of claim 1,wherein the one or more processors are further configured to: calculatea connection density value between the first member and the secondmember; and update the overlap value based on the connection densityvalue.
 14. The system of claim 12, wherein the overlap value is furtherbased on a first geographic region associated with the first member anda second geographic region associated with the second member; andwherein the overlap value increases when the first geographic region isthe same as the second geographic region.
 15. The system of claim 1,wherein the specific skill is not listed on a profile page of the secondmember, and wherein the specific skill is further determined based on ajob title of the second member.
 16. The system of claim 1, wherein thespecific skill is not listed on a profile page of the second member, andwherein the specific skill is further determined based on a degreeattained by the second member.
 17. The system of claim 1, wherein theendorsement suggestion further includes a common profile attributebetween the first member and the second member, and wherein the commonprofile attribute is a school that both the first member and the secondmember attended, or a company that employed both the first member andthe second member.
 18. A method comprising: accessing, from a memberdatabase, a plurality of skills associated with a first member and aplurality of skills associated with a second member; accessing, from askill reputation database, a reputation score for each skill in theplurality of skills associated with the first member and a reputationscore for each skill in the plurality of skills associated with thesecond member; selecting a subset of skills from the plurality of skillsassociated with the first member based on the reputation score for askill in the subset of skills being above a first threshold value;determining a specific skill associated with the second member based onthe reputation score of the second member for the specific skill, thespecific skill being a skill from the subset of skills; calculating,using a processor, a quality score for the specific skill based on themember data of the first member and the member data of the secondmember; and presenting, on a display of a device of the first member, anendorsement suggestion for the specific skill associated with the secondmember when the quality score transgresses a predetermined threshold.19. A system comprising: a member database storing profile data of afirst member, the profile data including a plurality of skillsassociated with the first member; a skill reputation database storing aplurality of reputation scores for a second member, each reputationscore in the plurality of reputation scores being associated with askill of the second member; one or more processors configured to:receive, from a user device of the second member, a request to view aprofile page of the first member; calculate a quality score for aspecific skill from the plurality of skills associated with the firstmember using an endorser value, a recipient value, or an overlap value;and generate an endorsement suggestion for the specific skill when thequality score transgresses a predetermined threshold; and a userinterface to present the endorsement suggestion on the profile page ofthe second member.
 20. The system of claim 19, wherein the one or moreprocessors are further configured to: access a reputation score of thesecond member for the specific skill; and update the quality score basedon the reputation score of the second member for the specific skill.